
import java.util.Iterator;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;


public class DentistaController {
    
    //<editor-fold defaultstate="collapsed" desc="Construtor">
    public DentistaController(){
        
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="Métodos">
    
    /*
     * Método para buscar o próximo id a ser gravado no banco
     */
    public int buscarIDProx(String id_tabela){
        int id;
        DentistaDAO dentistaDAO = new DentistaDAO();
        id = dentistaDAO.buscar_ProximoID(id_tabela);
        return id;
    }
    /*
     * Método para busca de ids apenas pasando a linha
     * do registro selecionado da tabela.
     */
    public int buscarIDdeTabelas(int linha,int coluna){        
        DentistaDAO dentistaDAO = new DentistaDAO();
        return dentistaDAO.buscarID_Tabelas(linha,coluna);
    }
     /*
     * Método para buscar id de uma clinica passada por
     * parametro
     */
    public int buscarIDClinica(String nome_clinica){
        DentistaDAO dentistaDAO = new DentistaDAO();
        return dentistaDAO.buscarID_Clinica(nome_clinica,"id_clinica");
    }
    
    /*
     * Método que seta os atributos para cadastrar clinicas
     */
    public boolean cadastrarDentista(int id_clinica,String nome,String cpf,String cnpj,String email,String telefone,String celular,String endereco
                    ,String numero,String apto,String uf,String cidade,String bairro){
        Dentista dentista = new Dentista();
        
        dentista.setID_Clinica(id_clinica);
        dentista.setNome(nome);
        //dentista.setNomeClinica(nome_clinica);
        dentista.setApto(apto);
        dentista.setBairro(bairro);
        dentista.setCelular(celular);
        dentista.setCidade(cidade);
        dentista.setCnpj(cnpj);
        dentista.setEmail(email);
        dentista.setEndereco(endereco);
        dentista.setNumero(numero);
        dentista.setCpf(cpf);
        dentista.setTelefone(telefone);
        dentista.setUf(uf);
        
        DentistaDAO dentistaDAO = new DentistaDAO();
        return dentistaDAO.cadastrarDentista(dentista);
    } 

    /*
     * Método para buscar dentistas, e setar em uma jtable
     * a partir do tipo de pesquisa e valor a ser pesquisado.
     */
    public void buscarDentistas(String filtrar_por,String pesquisar){
        DentistaDAO dentistaDAO = new DentistaDAO();
        Vector<Dentista> vector = new Vector<Dentista>();
        
        vector = dentistaDAO.buscarDentistas(filtrar_por,pesquisar);
        
        DefaultTableModel model = ((DefaultTableModel)frm_dentistas.jt_dentistas.getModel()); 
        model.getDataVector().removeAllElements();
        
        int linha=0;
            for (Iterator<Dentista> iterator = vector.iterator(); iterator.hasNext();) {
                model.addRow(new String[] {});
                Dentista dentista = iterator.next();
                frm_dentistas.jt_dentistas.setValueAt(dentista.getID_Dentista(), linha, 0);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getNome(), linha, 1);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getNomeClinica(), linha, 2);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getCpf(), linha, 3);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getCnpj(), linha, 4);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getEmail(), linha, 5);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getTelefone(), linha, 6);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getCelular(), linha, 7);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getEndereco(), linha, 8);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getNumero(), linha, 9);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getApto(), linha, 10);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getUf(), linha, 11);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getCidade(), linha, 12);
                frm_dentistas.jt_dentistas.setValueAt(dentista.getBairro(), linha, 13);
                linha++;
            }   
    }
    /*
     * Método para listar os campos de uma clinica recebendo por parametro
     * o respectivo id da clinica selecionada na tabela de consulta.
     */
    public void editarDentista(int id){
        Vector<Dentista> vector = new Vector<Dentista>();
        DentistaDAO dentistaDAO = new DentistaDAO();
        Dentista dentista = new Dentista();
        
        dentista.setID_Dentista(id);
        vector = dentistaDAO.editarDentista(dentista);
        
        for (Iterator<Dentista> iterator = vector.iterator(); iterator.hasNext();) {
            
            dentista = iterator.next();
            frm_dentistas.tf_codigo.setText(dentista.getID_Dentista()+"");
            frm_dentistas.tf_nome.setText(dentista.getNome()+"");
            frm_dentistas.cb_clinica.setSelectedItem(dentista.getNomeClinica());
            frm_dentistas.tf_cpf.setText(dentista.getCpf()+"");
            frm_dentistas.tf_cnpj.setText(dentista.getCnpj()+"");
            frm_dentistas.tf_email.setText(dentista.getEmail()+"");
            frm_dentistas.tf_telefone.setText(dentista.getTelefone()+"");
            frm_dentistas.tf_celular.setText(dentista.getCelular()+"");
            frm_dentistas.tf_endereco.setText(dentista.getEndereco()+"");
            frm_dentistas.tf_numero.setText(dentista.getNumero()+"");
            frm_dentistas.tf_apto.setText(dentista.getApto()+"");
            frm_dentistas.cb_uf.setSelectedItem(dentista.getUf());
            frm_dentistas.tf_cidade.setText(dentista.getCidade()+"");
            frm_dentistas.tf_bairro.setText(dentista.getBairro()+"");
        }
    }
    /*
     * Método que recebe os parametros de uma clinica a serem alterados
     * e atribui ao objeto clinica para ser acessado pela ClinicaDAO.
     */
    public boolean alterarDentista(int id_dentista,int id_clinica,String nome,String cpf,String cnpj,String email,String telefone, String celular,String endereco
                    ,String numero, String apto, String uf, String cidade,String bairro){
        
        Dentista dentista = new Dentista();
        dentista.setID_Dentista(id_dentista);
        dentista.setID_Clinica(id_clinica);
        dentista.setNome(nome);
        dentista.setApto(apto);
        dentista.setBairro(bairro);
        dentista.setCelular(celular);
        dentista.setCidade(cidade);
        dentista.setCnpj(cnpj);
        dentista.setEmail(email);
        dentista.setEndereco(endereco);
        dentista.setNumero(numero);
        dentista.setCpf(cpf);
        dentista.setTelefone(telefone);
        dentista.setUf(uf);
        
        DentistaDAO dentistaDAO = new DentistaDAO();
        return dentistaDAO.alterarDentista(dentista);
        
    }
    /*
     * Método para listar em um combobox clinicas
     * que estao cadastradas no banco de dados.
     */
    public void listarDentistasCombo(){
        DentistaDAO dentistaDAO = new DentistaDAO();
        dentistaDAO.listarDentistasCombo();
    }
    
    //</editor-fold>
}
